Lab: Análise de Componentes Principais em R
IFMG - Campus Formiga
19 de outubro de 2023
Lembre-se que a sala virtual da disciplina está disponível no AVA (Moodle) do IFMG:
E que para acessar a sala, basta utilizar as mesmas informações (usuario/senha) que vocês utilizam para acessar o sistema acadêmico Meu IFMG
Análise de Componentes Principais em R
Usando a função prcomp() do pacote base stats
Usando os pacotes FactoMineR
Por favor criem um R Notebook no RStudio e o nomeiem como pca.Rmd
Você pode criar um novo notebook no RStudio usando o menu principal:
File -> New File -> R NotebookTrechos de código podem ser inseridos usando o seguinte atalho do teclado:
Insert a new code chunk.Vamos criar juntos o R Notebook para esta aula.
USArrests
USArrests
[1] "Alabama" "Alaska" "Arizona" "Arkansas"
[5] "California" "Colorado" "Connecticut" "Delaware"
[9] "Florida" "Georgia" "Hawaii" "Idaho"
[13] "Illinois" "Indiana" "Iowa" "Kansas"
[17] "Kentucky" "Louisiana" "Maine" "Maryland"
[21] "Massachusetts" "Michigan" "Minnesota" "Mississippi"
[25] "Missouri" "Montana" "Nebraska" "Nevada"
[29] "New Hampshire" "New Jersey" "New Mexico" "New York"
[33] "North Carolina" "North Dakota" "Ohio" "Oklahoma"
[37] "Oregon" "Pennsylvania" "Rhode Island" "South Carolina"
[41] "South Dakota" "Tennessee" "Texas" "Utah"
[45] "Vermont" "Virginia" "Washington" "West Virginia"
[49] "Wisconsin" "Wyoming"
USArrests
Murder Assault UrbanPop Rape
Min. : 0.800 Min. : 45.0 Min. :32.00 Min. : 7.30
1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50 1st Qu.:15.07
Median : 7.250 Median :159.0 Median :66.00 Median :20.10
Mean : 7.788 Mean :170.8 Mean :65.54 Mean :21.23
3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75 3rd Qu.:26.18
Max. :17.400 Max. :337.0 Max. :91.00 Max. :46.00
Rape) do que homicídios (Murder), e mais de oito vezes mais agressões (Assault) do que estupros.USArrests
apply():USArrests - VariabilidadeA variável UrbanPop mede a porcentagem da população de cada estado que vive em área urbana, que não é um número comparável ao número de estupros em cada estado por 100.000 indivíduos.
Se não padronizamos as variáveis antes de realizar a PCA, a maioria dos componentes principais que observamos seriam impulsionados pela variável Assault, uma vez que ela tem de longe as maiores média e variância.
Assim, é importante padronizar as variáveis para que tenham média zero e desvio padrão um antes de realizar a PCA.
prcomp()
prcomp(), que é uma das várias funções em R que executam PCA:Por padrão, a função prcomp() centraliza as variáveis para terem média zero.
Usando a opção scale = TRUE, escalamos o variáveis para que tenham desvio padrão igual a um.
prcomp()
prcomp() contém uma série de quantidades úteis.center e scalce correspondem às médias e desvios padrão das variáveis que foram padronizadas antes da implementação da PCA.prcomp()
rotation contém as cargas dos componentes principais; cada coluna desta matriz contém o correspondente vetor de cargas do componente principal.prcomp()
prcomp()
Vemos que há 4 componentes principais distintos. Isso era esperado, porque em geral, existem \(\min(n-1,p)\) componentes principais informativos em um conjunto de dados com \(n\) observações e \(p\) variáveis.
Usando a função prcomp(), não precisamos multiplicar explicitamente os dados pelos vetores de cargas do componente principal para obter os vetores de scores do componente principal.
Em vez disso, a matriz x (\(50 \times 4\)) tem como colunas os vetores de scores dos componentes principais. Ou seja, a \(k\)ésima coluna de x é o \(k\)-ésimo vetor de score do componente principal.
prcomp()
x e os vetores de scores dos componentes principais, que são as colunas de x: PC1 PC2 PC3 PC4
Alabama -0.97566045 -1.12200121 0.43980366 0.154696581
Alaska -1.93053788 -1.06242692 -2.01950027 -0.434175454
Arizona -1.74544285 0.73845954 -0.05423025 -0.826264240
Arkansas 0.13999894 -1.10854226 -0.11342217 -0.180973554
California -2.49861285 1.52742672 -0.59254100 -0.338559240
Colorado -1.49934074 0.97762966 -1.08400162 0.001450164
Connecticut 1.34499236 1.07798362 0.63679250 -0.117278736
Delaware -0.04722981 0.32208890 0.71141032 -0.873113315
Florida -2.98275967 -0.03883425 0.57103206 -0.095317042
Georgia -1.62280742 -1.26608838 0.33901818 1.065974459
Hawaii 0.90348448 1.55467609 -0.05027151 0.893733198
Idaho 1.62331903 -0.20885253 -0.25719021 -0.494087852
Illinois -1.36505197 0.67498834 0.67068647 -0.120794916
Indiana 0.50038122 0.15003926 -0.22576277 0.420397595
Iowa 2.23099579 0.10300828 -0.16291036 0.017379470
Kansas 0.78887206 0.26744941 -0.02529648 0.204421034
Kentucky 0.74331256 -0.94880748 0.02808429 0.663817237
Louisiana -1.54909076 -0.86230011 0.77560598 0.450157791
Maine 2.37274014 -0.37260865 0.06502225 -0.327138529
Maryland -1.74564663 -0.42335704 0.15566968 -0.553450589
Massachusetts 0.48128007 1.45967706 0.60337172 -0.177793902
Michigan -2.08725025 0.15383500 -0.38100046 0.101343128
Minnesota 1.67566951 0.62590670 -0.15153200 0.066640316
Mississippi -0.98647919 -2.36973712 0.73336290 0.213342049
Missouri -0.68978426 0.26070794 -0.37365033 0.223554811
Montana 1.17353751 -0.53147851 -0.24440796 0.122498555
Nebraska 1.25291625 0.19200440 -0.17380930 0.015733156
Nevada -2.84550542 0.76780502 -1.15168793 0.311354436
New Hampshire 2.35995585 0.01790055 -0.03648498 -0.032804291
New Jersey -0.17974128 1.43493745 0.75677041 0.240936580
New Mexico -1.96012351 -0.14141308 -0.18184598 -0.336121113
New York -1.66566662 0.81491072 0.63661186 -0.013348844
North Carolina -1.11208808 -2.20561081 0.85489245 -0.944789648
North Dakota 2.96215223 -0.59309738 -0.29824930 -0.251434626
Ohio 0.22369436 0.73477837 0.03082616 0.469152817
Oklahoma 0.30864928 0.28496113 0.01515592 0.010228476
Oregon -0.05852787 0.53596999 -0.93038718 -0.235390872
Pennsylvania 0.87948680 0.56536050 0.39660218 0.355452378
Rhode Island 0.85509072 1.47698328 1.35617705 -0.607402746
South Carolina -1.30744986 -1.91397297 0.29751723 -0.130145378
South Dakota 1.96779669 -0.81506822 -0.38538073 -0.108470512
Tennessee -0.98969377 -0.85160534 -0.18619262 0.646302674
Texas -1.34151838 0.40833518 0.48712332 0.636731051
Utah 0.54503180 1.45671524 -0.29077592 -0.081486749
Vermont 2.77325613 -1.38819435 -0.83280797 -0.143433697
Virginia 0.09536670 -0.19772785 -0.01159482 0.209246429
Washington 0.21472339 0.96037394 -0.61859067 -0.218628161
West Virginia 2.08739306 -1.41052627 -0.10372163 0.130583080
Wisconsin 2.05881199 0.60512507 0.13746933 0.182253407
Wyoming 0.62310061 -0.31778662 0.23824049 -0.164976866
biplot():O argumento scale = 0 de biplot() garante que as setas sejam dimensionadas para representar as cargas;
outros valores para scale fornecem biplots ligeiramente diferentes com interpretações diferentes.
Observe que este gráfico é uma imagem espelhada da Figura 2 dos slides da aula de 18/10.
Lembre-se de que os componentes principais são únicos à exceção de uma mudança de sinal, assim, vamos tentar reproduzir a Fig. 2 fazendo algumas pequenas alterações:
A função prcomp() também gera o desvio padrão de cada componente principal.
Por exemplo, para os dados USArrests, podemos acessar esses desvios padrão com:
summary ao resultado de prcomp:FactoMineR
Pacote que disponibiliza métodos exploratórios de análise de dados para resumir, visualizar e descrever dados multivariados.
Os principais métodos de PCA são disponibilizados:
facotextra
Fornece algumas funções simpes de usar para extrair e visualizar o resultado de análises de dados multivariados.
Compatível com os resultados do pacote FactoMineR
FactoMineR
Argumentos da funcão FactoMineR::PCA:
scale.unit = TRUE: por padrão as variáveis são centradas (\(x_i - \bar{x}\)), se TRUE, divide-se as variáveis centradas pelo desvio-padrão: \(\frac{(x_i - \bar{x})}{s_{x_i}}\).
ncp define o número máximo de componentes: \(\min(n-1,p)\)
FactoMineR
library(FactoMineR)
fmine_output = FactoMineR::PCA(USArrests, scale.unit = TRUE, ncp = 4, graph = F)
summary(fmine_output)
Call:
FactoMineR::PCA(X = USArrests, scale.unit = TRUE, ncp = 4, graph = F)
Eigenvalues
Dim.1 Dim.2 Dim.3 Dim.4
Variance 2.480 0.990 0.357 0.173
% of var. 62.006 24.744 8.914 4.336
Cumulative % of var. 62.006 86.750 95.664 100.000
Individuals (the 10 first)
Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3
Alabama | 1.574 | 0.986 0.783 0.392 | -1.133 2.596 0.518 | 0.444
Alaska | 3.051 | 1.950 3.067 0.409 | -1.073 2.327 0.124 | -2.040
Arizona | 2.089 | 1.763 2.507 0.712 | 0.746 1.124 0.127 | -0.055
Arkansas | 1.149 | -0.141 0.016 0.015 | -1.120 2.534 0.950 | -0.115
California | 3.037 | 2.524 5.137 0.690 | 1.543 4.811 0.258 | -0.599
Colorado | 2.114 | 1.515 1.850 0.513 | 0.988 1.971 0.218 | -1.095
Connecticut | 1.860 | -1.359 1.489 0.534 | 1.089 2.396 0.343 | 0.643
Delaware | 1.184 | 0.048 0.002 0.002 | 0.325 0.214 0.075 | 0.719
Florida | 3.070 | 3.013 7.321 0.964 | -0.039 0.003 0.000 | 0.577
Georgia | 2.366 | 1.639 2.167 0.480 | -1.279 3.305 0.292 | 0.342
ctr cos2
Alabama 1.107 0.080 |
Alaska 23.343 0.447 |
Arizona 0.017 0.001 |
Arkansas 0.074 0.010 |
California 2.010 0.039 |
Colorado 6.726 0.268 |
Connecticut 2.321 0.120 |
Delaware 2.897 0.368 |
Florida 1.866 0.035 |
Georgia 0.658 0.021 |
Variables
Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
Murder | 0.844 28.719 0.712 | -0.416 17.488 0.173 | 0.204 11.644
Assault | 0.918 34.010 0.844 | -0.187 3.534 0.035 | 0.160 7.190
UrbanPop | 0.438 7.739 0.192 | 0.868 76.179 0.754 | 0.226 14.290
Rape | 0.856 29.532 0.732 | 0.166 2.800 0.028 | -0.488 66.876
cos2
Murder 0.042 |
Assault 0.026 |
UrbanPop 0.051 |
Rape 0.238 |
FactoMineR: Scree PlotFactoMineR - GráficosA função plot.PCA produz dois gráficos:
Mapa de fatores das variáveis:
O mapa de fatores das variáveis apresenta uma visão da projeção das variáveis observadas no plano abrangendo os dois primeiros componentes principais.
Isso nos mostra a relação estrutural entre as variáveis e os componentes, e nos ajuda a nomear os componentes.
A projeção de um vetor das variável no eixo do componente nos permite ver diretamente a correlação entre a variável e o componente.
A ideia desse gráfico é mostrar com qual direção (componete) as variáveis sào correlacionadas. O eixo que representa Dim 1 e Dim 2 contém o coeficiente de correlação de Pearson (\(-1 \leq r \leq +1\)).
FactoMineR: Mapa de fatores das variáveisfactoextra: Mapa de fatores das variáveisFactoMineR: Mapa de fatores das variáveisfactoextra: Mapa de fatores das variáveis e indivíduosfactoextra: Mapa de fatores das variáveis e indivíduos